<?php
// Nettoyage de caractères
			function suppr_spe_char($chaine) {
   			$accents = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ','.','/');
   			$sans = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y',' ',' ');
   			return str_replace($accents, $sans, $chaine);
			} 
require_once("dao/Dao.php");			
require_once('utils/csv.inc.php');
require_once('utils/ftp.inc.php');
require_once('dao/CommandeDao.php');
require_once('dao/CarteSimDao.php');
require_once('dao/ClientDao.php');
require_once('dao/OffreVenteDao.php');
require_once('dao/MailDao.php');


/**
 * Classe de création de fichier CSV de modification.
 */
class ModificationRequest extends Dao {
	 
	public static function Modification($type_modif,$id,$code_client_hto,$ndi,$sim,$rio,$puk,$utilisateur,$grille_tarifaire,$appels_internes,$reduction_abonnement,$reduction_option,$reduction_terminal,$reduction_minute_national,$reduction_minute_international,$engagement,$abonnement_mobile,$options_mobile){
		
		global $logger;
		$logger->info("Génération du fichier de modification de ligne pour la ligne  : " + $ndi);
		
		//récupération des éléments de la base
		$ligne = ClientDao::searchByoffremobile_ndi($ndi);
		$carte_sim = $ligne[0]['num_sim'];
		$equipement = $ligne[0]['equipement_nom'];
		$client = $code_client_hto;
		
		$detail_client = ClientDao::searchById($client);
		$raison_social = $detail_client[0]['raison_social'];
		
		//action suivant le type de modif et création du nom du fichier offre com
		if($type_modif=="MO"){
			//mettre en pending les modifications type équipement, engagement, abonnement et options
			$maj_ligne = ClientDao::updateLigneMobileClient($id,$equipement,$engagement,$abonnement_mobile,$options_mobile,$ndi,$client,$sim,$rio,$puk,$utilisateur);
			$nom_offrecom = "modif_offre";
			//var_dump($maj_ligne);
		}elseif($type_modif=="MU"){
			//mettre à jour l'utilisateur		
			parent::exec("UPDATE detail_client SET utilisateur ='".$utilisateur."' WHERE ndi='".$ndi."' ");
			$nom_offrecom = "modif_user";
			$type_modif_origine = "MU";
			$type_modif="MO";
		}elseif($type_modif=="MB"){
			//mettre à jour la base des éléments de réductions
			parent::exec("UPDATE detail_client SET grille_tarifaire ='".$grille_tarifaire."', appels_internes ='".$appels_internes."', abonnement='".$reduction_abonnement."', option_mobile='".$reduction_option."', mobil='".$reduction_terminal."', minute_national='".$reduction_minute_national."',  minute_international='".$reduction_minute_international."'  WHERE ndi='".$ndi."' "); 
			$nom_offrecom = "modif_tarif";
			$type_modif_origine = "MB";
			$type_modif="MO";
		}elseif($type_modif=="IR" or $type_modif=="IC" or $type_modif=="I"){
			//mettre à jour l'international	
			if($type_modif=="IC")
			{
				$international="N";
				$international_csv2="ICUT";
			}else{
				$international_csv2=$international=$type_modif;
			}	
			parent::exec("UPDATE detail_client SET com_ir ='".$international."' WHERE ndi='".$ndi."' ");
			$nom_offrecom = "modif_international";
			$type_modif_origine = "I";
			$type_modif="MO";
		}else{
			$nom_offrecom = "modification";
		}
		
		// Récupération de l'offre et des options dans la base
		$liste_details = ClientDao::searchBymobile_ndi($ndi);
		//var_dump($liste_details);
		
		//mise en variable des valeurs de la base si pas de modifications
		if($utilisateur == ''){$utilisateur = $liste_details[0]['utilisateur'];}
		if(isset($maj_ligne['offre_com_offre_nom']) and $maj_ligne['offre_com_offre_nom'] == '')
		{
			$abonnement_mobile = $liste_details[0]['offre']; 
			$abonnement_mobile_prix = $liste_details[0]['prix'];
		}else{
			$abonnement_mobile = $maj_ligne['offre_com_offre_nom']; 
			$abonnement_mobile_prix = $maj_ligne['offre_com_offre_prix'];
		}
		if(isset($maj_ligne['offre_com_option_nom']) and $maj_ligne['offre_com_option_nom'] == '')
		{
			$options_mobile = $liste_details[1]['offre'];
			$options_mobile_prix = $liste_details[1]['prix'];
		}else{
			$options_mobile = $maj_ligne['offre_com_option_nom']; 
			$options_mobile_prix = $maj_ligne['offre_com_option_prix']; 
		}
		if($engagement == ''){$engagement = $liste_details[0]['engagement'];}
		if($grille_tarifaire == ''){$grille_tarifaire = $liste_details[0]['grille_tarifaire'];}
		if($appels_internes == ''){$appels_internes = $liste_details[0]['appels_internes'];}
		if($reduction_abonnement == ''){$reduction_abonnement = $liste_details[0]['abonnement'];}
		if($reduction_option == ''){$reduction_option = $liste_details[0]['option_mobile'];}
		if($reduction_terminal == ''){$reduction_terminal = $liste_details[0]['mobil'];} 
		if($reduction_minute_national == ''){$reduction_minute_national = $liste_details[0]['minute_national'];}
		if($reduction_minute_international == ''){$reduction_minute_international = $liste_details[0]['minute_international'];}
		//var_dump($liste_details);
				
		// Initialisation des données
		/*$statut_csv2 = $statut_csv = array(	'DATA'=>'',
								'Blackberry'=>'',
								'Foreign Status'=>'',
								'Voice Bundle'=>'',
								'SMS'=>'',
								'Other'=>'');*/
								
		if ($liste_details != NULL){
			foreach ($liste_details as $liste_details)
			{
			if($liste_details['com_temps']<>'')
			{
				$statut_csv['Voice Bundle'] = $liste_details['com_temps'];
			}
			if($liste_details['com_data']<>'')
			{
				$statut_csv['DATA'] = $liste_details['com_data'];
			}
			if($liste_details['com_sms']<>'')
			{
				$statut_csv['SMS'] = $liste_details['com_sms'];
			}
			if($liste_details['com_bb']<>'')
			{
				$statut_csv['Blackberry'] = $liste_details['com_bb'];
			}
			if($liste_details['com_ir']<>'')
			{
				$statut_csv['Foreign Status'] = $liste_details['com_ir'];
				$statut_csv['Foreign Status'] = '';
			}
			if($liste_details['equipement_nom']<>''){$equipement = $liste_details['equipement_nom'];}else{$equipement = null;}
				
			}
		}
	var_dump($maj_ligne);///////////////////////////////////////////////////////////////////////////////////////////////////
		if(isset($maj_ligne['code_article']))
		{
			$statut_csv2['Voice Bundle'] = $maj_ligne['code_article'];
		}
		if(isset($maj_ligne['Voice Bundle']))
		{
			$statut_csv['Voice Bundle'] = $maj_ligne['Voice Bundle'];
			
		}
		if(isset($maj_ligne['DATA']))
		{
			$statut_csv['DATA'] = $maj_ligne['DATA'];
			$statut_csv2['DATA'] = $maj_ligne['DATA_code_article'];
			$statut_csv2['Option_data'] = $maj_ligne['DATA_nom'];
			$statut_csv2['Prix_data'] = $maj_ligne['DATA_prix'];
		}
		if(isset($maj_ligne['SMS']))
		{
			$statut_csv['SMS'] = $maj_ligne['SMS'];
			$statut_csv2['SMS'] = $maj_ligne['SMS_code_article'];
			$statut_csv2['Option_sms'] = $maj_ligne['SMS_nom'];
			$statut_csv2['Prix_sms'] = $maj_ligne['SMS_prix'];
		}
		if(isset($maj_ligne['Blackberry']))
		{
			$statut_csv['Blackberry'] = $maj_ligne['Blackberry'];
			$statut_csv2['Blackberry'] = $maj_ligne['Blackberry_code_article'];
			$statut_csv2['Option_bb'] = $maj_ligne['BB_nom'];
			$statut_csv2['Prix_bb'] = $maj_ligne['BB_prix'];
		}
		if(isset($maj_ligne['Foreign Status']))
		{
			$statut_csv['Foreign Status'] = $maj_ligne['Foreign Status'];
			$statut_csv2['Foreign Status'] = $maj_ligne['Foreign Status_code_article'];
			$statut_csv2['Option_international'] = $maj_ligne['international_nom'];
			$statut_csv2['Prix_international'] = $maj_ligne['international_prix'];
		}
		if(isset($maj_ligne['other']))
		{
			$statut_csv['Other'] = $maj_ligne['other'];
			$statut_csv2['Other'] = $maj_ligne['other'];
		}

		if($type_modif_origine=="MU" or $type_modif_origine=="MB" or $type_modif=="IS" or $type_modif=="RE" or $type_modif=="SU" or $type_modif=="TE" or $type_modif=="SW" or $type_modif=="AP" or $type_modif=="MW")
		{
			// Initialisation des données
			$statut_csv2 = $statut_csv = array(	'DATA'=>'',
									'Blackberry'=>'',
									'Foreign Status'=>'',
									'Voice Bundle'=>'',
									'SMS'=>'',
									'Other'=>'');

			$abonnement_mobile = "";
			$abonnement_mobile_prix = "";
			$options_mobile = "";
			$options_mobile_prix = "";
			$grille_tarifaire = "";
			$appels_internes = "";
			$engagement = "";
		}
		
		//variables si international
		if($type_modif_origine == "I")
		{
			$statut_csv = array(	'DATA'=>'',
									'Blackberry'=>'',
									'Foreign Status'=>$international,
									'Voice Bundle'=>'',
									'SMS'=>'',
									'Other'=>'');
			$statut_csv2 = array(	'DATA'=>'',
									'Blackberry'=>'',
									'Foreign Status'=>$international_csv2,
									'Voice Bundle'=>'',
									'SMS'=>'',
									'Other'=>'');						

			$abonnement_mobile = "";
			$abonnement_mobile_prix = "";
			$options_mobile = "";
			$options_mobile_prix = "";
			$grille_tarifaire = "";
			$appels_internes = "";
			$engagement = "";
			$terminal = "";
		}
		
	
	// génération des tableaux d'informations avant envoi	
	$data[0] = array(
				"Id" => '1',																// Compteur 
				"RequestDate" => date("Y-m-d") , 											// Date de création de la ligne
				"RequestType" => $type_modif,   											// Type de demande
				"OrigyneId (SIM Serial)" => $carte_sim,										// Carte SIM
				"ExternalReference1 (LastName)" => suppr_spe_char($raison_social),			// Raison sociale de la société
				"ExternalReference2 (FirstName)" => suppr_spe_char($utilisateur),			// Utilisateur de la ligne
				"IVROptionalCode (ZipCode)" => CODE_IVR,									// Code IVR
				//"Offer" => "",																// Offre
				"MSISDN" => $ndi,															// MSISDN de la ligne existante
				//"RIO" => "",																// RIO
				//"PortingDate" => "",														// Date de la demande de portabilité
				"DATA" => $statut_csv['DATA'], 												// Option DATA à acheter
				"Blackberry" => $statut_csv["Blackberry"],									// Option Blackberry à acheter
				"Foreign Status" => $statut_csv["Foreign Status"], 							// Activation ou non des appels internationnals
				"Voice Bundle" => $statut_csv['Voice Bundle'], 								// Offre voix à acheter
				"SMS" => $statut_csv["SMS"], 												// Option SMS à acheter
				"Other" => $statut_csv["Other"] 											// Autre options à acheter
		);
	var_dump($statut_csv2);
	$data2[0] = array(
				"Id" => '1',																// Compteur 
				"RequestDate" => date("Y-m-d") , 											// Date de création de la ligne
				"RequestType" => $type_modif,   											// Type de demande
				"OrigyneId (SIM Serial)" => $carte_sim,										// Carte SIM
				"ExternalReference1 (LastName)" => suppr_spe_char($raison_social),			// Raison sociale de la société
				"ExternalReference2 (FirstName)" => suppr_spe_char($utilisateur),			// Utilisateur de la ligne
				"IVROptionalCode (ZipCode)" => CODE_IVR,											// Code IVR
				//"Offer" => "",																// Offre 
				"MSISDN" => $ndi,															// MSISDN de la ligne existante
				//"RIO" => "",																// RIO
				//"PortingDate" => "",														// Date de la demande de portabilité
				"DATA" => $statut_csv2['DATA'], 												// Option DATA à acheter
				"Blackberry" => $statut_csv2["Blackberry"],									// Option Blackberry à acheter
				"Foreign Status" => $statut_csv2["Foreign Status"], 							// Activation ou non des appels internationnals
				"Voice Bundle" => $statut_csv2['Voice Bundle'], 								// Offre voix à acheter
				"SMS" => $statut_csv2["SMS"], 												// Option SMS à acheter
				"Other" => $statut_csv2["Other"], 											// Autre options à acheter
				"Terminal" => $terminal,			 											// Terminal
				"Offre" => suppr_spe_char($abonnement_mobile),
				"Offre Prix" => $abonnement_mobile_prix,
				"Option_sms" => $statut_csv2['Option_sms'],										
				"Prix_sms" => $statut_csv2['Prix_sms'],
				"Option_data" => $statut_csv2['Option_data'],											
				"Prix_data" => $statut_csv2['Prix_data'],	
				"Option_bb" => $statut_csv2['Option_bb'],										
				"Prix_bb" => $statut_csv2['Prix_bb'],	
				"Option_international" => $statut_csv2['Option_international'],											
				"Prix_international" => $statut_csv2['Prix_international'],	
				"Reduc. Abonnement" => $reduction_abonnement,
				"Reduc. Minute National" => $reduction_minute_national,
				"Reduc. Minute International" => $reduction_minute_international,
				"Reduc. Option Mobile" => $reduction_option,
				"Reduc. Terminal" => $reduction_terminal,
				"Grille Tarifaire" => $grille_tarifaire,
				"Forfait Partage" => "",
				"Engagement" => $engagement,
				"Appels Internes" => $appels_internes
				//"Forfait Partage" => $liste_details['forfait_partage'],
				//"Forfait Jours" => $liste_details['forfait_jours'],
				//"Forfait Horaires" => $liste_details['forfait_horaires'],
				//"Quota Temps" => $liste_details['quota_temps'],
				//"Quota SMS" => $liste_details['quota_sms'],
				//"Quota DATA" => $liste_details['quota_data'],
		);	

		// Nom du fichier CSV à générer
			//recup des millisecondes
			$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
			$msec = substr($time, strpos($time, ".") + 1);
		$filename = "ModificationRequest_".date("Ymd_His")."_".$msec.".csv";
		$filename2 = CODE_IVR."_".$nom_offrecom."_".date("Ymd_His")."_".$msec.".csv";
	
		// Appel de la fonction de génération de fichier CSV
		$logger->info("Génération du fichier CSV de modificationn : " . $filename);
		writeCSV(MM_CSV_PATH,$filename,$data);
		$logger->info("Génération du fichier CSV de modification : " . $filename2);
		writeCSV(MM_CSV_PATH,$filename2,$data2);
		
		// Envoi sur le serveur en FTP
		$logger->info("Envoi du fichier de modification : " .MM_FTP_HOST." / ".$filename);
		if (MM_FTP_ENABLE){
			uploadFile(MM_CSV_PATH.$filename,
						MM_FTP_PROVISIONNING.$filename,
						MM_FTP_HOST,
						MM_FTP_USERNAME,
						MM_FTP_PASSWORD,
						MM_ARCHIVE_PATH."/modification/".$filename);
			$logger->info("Envoi du fichier de modification : " .MM_FTP_HOST." / ".$filename2);	
			uploadFile(MM_CSV_PATH.$filename2,
						MM_FTP_PROVISIONNING_OFFRE_COM.$filename2,
						MM_FTP_HOST,
						MM_FTP_USERNAME,
						MM_FTP_PASSWORD,
						MM_ARCHIVE_PATH."/modification/".$filename2);			
		
			// envoi d'un mail
			$logger->info("Envoi du mail de modification : " .$filename2);
			$type_mail = "Demande de modification";
			$resultat_mail = MailDao::EnvoiMail($type_mail,$raison_social,$filename2);
		} else {
				$logger->info("L'envoi FTP est désactivé");
		}
	}
}
